Static timing analysis (STA) can determine if there exist paths in an electrical circuit design with delays that exceed a given timing threshold. Such paths are commonly known as critical paths (CPs). When such a critical path is identified, the portion of the design associated with the critical path may need to be modified to satisfy the required timing thresholds. It is generally not preferred to make such design modifications if they can be avoided, since each such modification consumes time and system resources, as well as possibly introducing less optimal component configurations and sizes. Since the number of such critical paths may exceed, for example, tens of thousands for large gate-level designs in a modern design, a significant amount of time and system resources may need to be expended to address all of the identified critical paths.
Therefore, it is important to accurately identify the critical paths that really need to be addressed. To date, most approaches have focused on independent efforts to improve the accuracy of RTL static timing estimation or improving the performance of traditional STA at the gate level.
The typical design flow can involve a large number of static timing analysis (STA) runs in an iterative process. Each time the design is optimized via synthesis, floor planning, place and route, in-place optimization, and/or back annotated post layout, static timing analysis can be performed. For example, STA can generate tens of thousands of critical paths (CPs) with thousands of the CPs being false paths (FPs). Typically, critical paths are analyzed, e.g. manually, and constraints can be created for the false paths, e.g. manually, and fed back to these design tools. Generation of false path constraints for a typical design can take several weeks to several months and is very error prone. For example, very often, incremental changes can be made to a design. Incremental design changes can imply that from one static timing run to the next, many of the same false path constraints still apply. However, design changes may cause some of the constraints to become invalid. The false path constraints that are manually generated initially might not be re-verified when incremental changes are made to the design. The false path constraints that are no longer valid (invalid constraints) can cause a bad design to be implemented. Using the proposed method, existing constraints can be automatically verified and/or automatically regenerated, ensuring accurate and efficient design implementation.
False path detection at the gate level has been investigated. For example, some static timing tools detect paths that are logically never used with ATPG techniques; however, these techniques have been limited to the gate level without consideration of additional constraints that can be imposed by architectural information. Moreover, many false paths cannot be identified at the gate level. The problems of identifying which critical paths are real and which as false can often involve human intervention. This human intervention can be required because the critical paths can be reported without consideration for the function of a design. There are tools that explore static timing estimation at the RTL level; however, the tools that operate at the RTL level do not consider the actual critical paths in the gate level design. These tools are for timing estimation only and are not accurate enough for timing sign off. Identification of false paths that are based on the architectural information of a design is often managed manually and can require extensive communication between the engineer that performs the static timing analysis and designers that understand the architecture of the design. The manual analysis of these critical paths can be quite time consuming and error prone, adding weeks to months in the design process. Errors in the static timing analysis could lead to the manufacture of a bad design.
Embodiments of the present invention provide a method and system for performing false path analysis to accurately identify the set of critical paths which must be addressed in a circuit design. In one embodiment, a set of false paths is identified based upon analysis of both implementation-specific design data and non-implementation-specific design data. Embodiments of the invention provide automatic methods and systems for gate-level static timing false path analysis, identification, constraint generation and/or verification using architectural information. Accurate gate level timing data in conjunction with the architectural design data and formal methods can be used to identify false paths. The combination of formal techniques with static timing analysis to identify false paths using information from the architectural information yields improved results in identifying false paths. Some embodiments can use non-formal techniques such as simulation.
In some present embodiments, by combining static timing analysis with formal techniques such as equivalence checking (EC) for mapping gate level information to architectural information, model checking to identify unreachable states, and/or automated false path analysis and constraint generation for use in identifying false paths constraints, the amount of manual effort can be minimized. Some embodiments can use nonformal techniques such as simulation.
In one or more embodiments of the invention, static timing paths at the gate-level can be linked to the architectural information via techniques such as logic cone and/or state point correspondence, such as commonly used in equivalence checking (EC). The gate-level static timing paths can be analyzed in the context of the architectural information to identify false paths. The analysis of gate-level paths in the context of the architectural information can enable identification of false paths that cannot be identified in the context of gate-level information alone. Furthermore this automated approach can be less error prone and/or much more efficient than existing techniques which are commonly manual techniques.
Various embodiments include methods performing the technology described herein, code (at least partly hardware and/or at least partly software) performing the technology described herein, and one or more computers performing the technology described herein.
Further details of aspects, objects, and advantages of the invention are described below in the detailed description, drawings, and claims. Both the foregoing general description and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the invention.